/*
 * Copyright (c) 2005, 2014 vacoor
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */

package org.ponly.cta4j.service.store;

import java.util.Collection;
import org.ponly.cta4j.Captcha;

/**
 * 验证码存储.
 *
 * @author vacoor
 * @since 1.0
 */
public interface CaptchaStore {

    /**
     * 获取给定 id 对应的验证码, 如果验证码已经过期或不存在则返回 null.
     *
     * @param id 验证码标识
     * @return 对应的验证码或null
     */
    Captcha get(String id);

    /**
     * 使用给定的 id 存储验证码.
     *
     * @param id      ID
     * @param captcha 验证码
     */
    void put(String id, Captcha captcha);

    /**
     * 如果给定 id 存在对应的验证码, 则移除.
     *
     * @param id ID
     */
    void remove(String id);

    /**
     * @return 获取当前存储的验证码数量.
     */
    long size();

    /**
     * @return 获取当前存储的所有验证码 id .
     */
    Collection<String> keys();

    /**
     * 清空所有存储的验证码.
     */
    void clear();
}
